/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Entidades.Proyecto;
import Modelo.FachadaProyecto;
import java.io.Serializable;
import java.util.Collection;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Administrador
 */
@SessionScoped
@ManagedBean(name = "controladorProyecto")
public class ControladorProyecto implements Serializable {

    private Proyecto proyecto;
    @EJB
    private FachadaProyecto fachadaProyecto;
    private Collection<Proyecto> resultado;

    public ControladorProyecto() {
    }

    public Proyecto getProyecto() {
        if (proyecto == null) {
            proyecto = new Proyecto();
        }
        return proyecto;
    }

    public Collection<Proyecto> getProyectos() {
        return resultado;
    }

    public void setProyecto(Proyecto proyecto) {
        this.proyecto = proyecto;
    }

    public String crear() {
        fachadaProyecto.adicionar(getProyecto());
        proyecto = null;
        return "listar";
    }

    public String eliminar(Proyecto proyecto) {
        fachadaProyecto.eliminar(proyecto);
        return "listar";
    }

    public String prepararActualizar(Proyecto proyecto) {
        this.proyecto = proyecto;
        return "actualizar";
    }

    public String actualizar() {
        fachadaProyecto.actualizar(proyecto);
        return "listar";
    }

    public FachadaProyecto getFachadaProyecto() {
        return fachadaProyecto;
    }

    private void mostrarError(String mensaje) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, mensaje, null);
        facesContext.addMessage(null, facesMessage);
    }

    public String consultar() {
        if (("".equals(proyecto.getPalabraClave())) && ("".equals(proyecto.getTitulo())) && (proyecto.getAño() == 0) && (proyecto.getSemestre() == 0)) {
            resultado = fachadaProyecto.listar();
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && (proyecto.getTitulo() != null) && (proyecto.getAño() == 0) && (proyecto.getSemestre() == 0)) {
            if (fachadaProyecto.buscartitulo(proyecto.getTitulo()) == null) {
                mostrarError("NO SE ENCONTRO EL PROYECTO CON TITULO: " + proyecto.getTitulo());
                return null;
            } else {
                resultado = fachadaProyecto.buscartitulo(proyecto.getTitulo());
            }
            return "resultados";
        }
        if (("".equals(proyecto.getTitulo())) && ("".equals(proyecto.getPalabraClave())) && (proyecto.getAño() != 0) && (proyecto.getSemestre() == 0)) {
            if (fachadaProyecto.buscaraño(proyecto.getAño()) == null) {
                mostrarError("NO SE ENCONTRARON PROYECTOS CON EL AÑO: " + proyecto.getAño());
                return null;
            }
            else{
            resultado = fachadaProyecto.buscaraño(proyecto.getAño());
            }
            return "resultados";
        }
        if (("".equals(proyecto.getTitulo())) && (proyecto.getPalabraClave() != null) && (proyecto.getAño() == 0) && (proyecto.getSemestre() == 0)) {
            if(fachadaProyecto.buscarpalabraclave(proyecto.getPalabraClave())==null){
                mostrarError("NO SE ENCONTRARON PROYECTOS CON LA PALABRA CLAVE: "+proyecto.getPalabraClave());
                return null;
            }else{
            resultado = fachadaProyecto.buscarpalabraclave(proyecto.getPalabraClave());
            }
            
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && ("".equals(proyecto.getPalabraClave())) && (proyecto.getAño() == 0) && (proyecto.getSemestre() != 0)) {
            resultado = fachadaProyecto.buscarsemestre(proyecto.getSemestre());
            System.out.println("entro6" + resultado);
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && (proyecto.getTitulo() != null) && (proyecto.getAño() != 0) && (proyecto.getSemestre() == 0)) {
            resultado = fachadaProyecto.buscarTituloyAño(proyecto.getTitulo(), proyecto.getAño());
            System.out.println("entro5" + resultado);
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && (proyecto.getTitulo() != null) && (proyecto.getAño() == 0) && (proyecto.getSemestre() != 0)) {
            resultado = fachadaProyecto.buscarTituloySemestre(proyecto.getTitulo(), proyecto.getSemestre());
            System.out.println("entro4" + resultado);
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && ("".equals(proyecto.getPalabraClave())) && (proyecto.getAño() != 0) && (proyecto.getSemestre() != 0)) {
            resultado = fachadaProyecto.buscarAñoySemestre(proyecto.getAño(), proyecto.getSemestre());
            System.out.println("entro3" + resultado);
            return "resultados";
        }
        if (("".equals(proyecto.getPalabraClave())) && (proyecto.getTitulo() != null) && (proyecto.getAño() != 0) && (proyecto.getSemestre() != 0)) {
            resultado = fachadaProyecto.buscarTituloAñoySemestre(proyecto.getTitulo(), proyecto.getAño(), proyecto.getSemestre());
            System.out.println("entro2" + resultado);
            return "resultados";
        }
        if (("".equals(proyecto.getTitulo())) && (proyecto.getPalabraClave() != null) && (proyecto.getAño() != 0) && (proyecto.getSemestre() == 0)) {
            resultado = fachadaProyecto.buscarpalabraclave(proyecto.getPalabraClave());
            System.out.println("entro7" + resultado);
            return "resultados";
        }
        if ((proyecto.getPalabraClave() != null) && (proyecto.getTitulo() != null) && (proyecto.getAño() == 0) && (proyecto.getSemestre() == 0)) {
            resultado = fachadaProyecto.buscarpalabraclaveytitulo(proyecto.getTitulo(), proyecto.getPalabraClave());
            System.out.println("entro9" + resultado);
            return "resultados";
        }
        return "resultados";
    }

    
    public String verMas(Proyecto proyecto) {
        this.proyecto = proyecto;
        return "VerMas";
    }

    public String solicitarPrestamo() {
        if(proyecto.getDisponibilidadCd().equals("no")&&proyecto.getDisponibilidadDocumento().equals("no")){
            mostrarError("NO HAY FORMATOS DISPONIBLES PARA PRESTAR");
            return null;
        }
        return "solicitarPrestamo2";
    }
}
